home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / util / text / frexxedv.lha / FrexxEdpatch / fpl / LoadSaveProject.FPL < prev    next >
Text File  |  1995-09-25  |  5KB  |  243 lines

  1. /*
  2.  * SaveProject - saves all open buffers as a project file
  3.  *
  4.  * Written by Mathias Axelsson (c) 940715
  5.  *
  6.  * All info is saved in a selected file.
  7.  *
  8.  * First comes a line of info (starting with #).
  9.  * Second comes a line with (width, height, x, y position of window).
  10.  * After that comes several lines with:
  11.  * <full filename> <line> <byte position> <tab size>
  12.  *
  13.  */
  14.  
  15. void SaveProject(void)
  16. {
  17.     int firstid = NextBuffer();
  18.     string tmp, outfile;
  19.     int tal, id=0;
  20.     string projectname, dir;
  21.  
  22.     dir = ReadInfo("Project_dir");
  23.     if (!strlen(dir))
  24.         dir = "FrexxEd:projects/";
  25.     else
  26.         if (dir[strlen(dir) - 1] != '/')
  27.             dir = dir + "/";
  28.  
  29.     projectname = PromptFile(dir, "Save project:", "#?.prj");
  30.  
  31.     if (strlen(projectname))
  32.     {
  33.         outfile = "# full_file_name line byte_position tab_size window;\n";
  34.         id = firstid;
  35.                 
  36.         tal = ReadInfo("window_width", id);
  37.         outfile = joinstr(outfile, itoa(tal), " ");
  38.         tal = ReadInfo("window_height", id);
  39.         outfile = joinstr(outfile, itoa(tal), " ");
  40.         tal = ReadInfo("window_xpos", id);
  41.         outfile = joinstr(outfile, itoa(tal), " ");
  42.         tal = ReadInfo("window_ypos", id);
  43.         outfile = joinstr(outfile, itoa(tal), " ");
  44.         tal = ReadInfo("window", id);
  45.         outfile = joinstr(outfile, itoa(tal), " ;\n");
  46.  
  47.         do {
  48.             if (ReadInfo("type", id) & 1)
  49.             {
  50.                 tmp = ReadInfo("full_file_name", id);
  51.                 outfile = joinstr(outfile, "\"", tmp, "\"", " ");
  52.                 tal = ReadInfo("line", id);
  53.                 outfile = joinstr(outfile, itoa(tal), " ");
  54.                 tal = ReadInfo("byte_position", id);
  55.                 outfile = joinstr(outfile, itoa(tal), " ");
  56.                 tal = ReadInfo("tab_size", id);
  57.                 outfile = joinstr(outfile, itoa(tal), " ;\n");
  58.             }
  59.             
  60.             id = NextBuffer(id);
  61.             
  62.             if (id == firstid)
  63.                 id = 0;
  64.             
  65.         } while (id);
  66.         
  67.         if (SaveString(projectname, outfile))
  68.             Request("Error writing project file!", "Error message", "OK");
  69.     }
  70.     else
  71.         ReturnStatus(GetReturnMsg(GetErrNo()));
  72. }
  73.  
  74. /*
  75.  * LoadProject - Loads a project file and open buffers
  76.  *
  77.  * Written by Mathias Axelsson (c) 940715
  78.  *
  79.  * Loads the seleted project file and sets the window width, height
  80.  * x and y position. Then it opens all the files and sets line, byte
  81.  * position and tab size.
  82.  *
  83.  */
  84.  
  85. void LoadProject(void)
  86. {
  87.     int id, i, j, first = 1, x, y, w, h, win, id1=0;
  88.     string infile, tmp;
  89.  
  90.     string projectname, dir;
  91.  
  92.     dir = ReadInfo("Project_dir");
  93.     if (!strlen(dir))
  94.         dir = "FrexxEd:projects/";
  95.     else
  96.         if (dir[strlen(dir) - 1] != '/')
  97.             dir = dir + "/";
  98.  
  99.     projectname = PromptFile(dir, "Load project:", "#?.prj");
  100.     
  101.     if (strlen(projectname) >= 4)
  102.         if (stricmp(substr(projectname, strlen(projectname)-4, 4), ".prj"))
  103.             projectname = projectname + ".prj";
  104.     
  105.     if (strlen(projectname))
  106.     {
  107.         infile = LoadString(projectname);
  108.         if (strlen(infile))
  109.         {
  110.             if (strlen(infile) == 0)
  111.             {
  112.                 Request("Error reading project file!", "Error message", "OK");
  113.                 return;
  114.             }
  115.  
  116.             if (strncmp(infile, "#", 1))
  117.             {
  118.                 Request("This is not a project file!", "Error message", "OK");
  119.                 return;
  120.             }
  121.  
  122.             i = strstr(infile, ";");
  123.             if (i < 0)
  124.                 return;
  125.  
  126.             infile = substr(infile, i + 2, 10000);
  127.  
  128.             j = strstr(infile, " ");
  129.             tmp = substr(infile, 0, j);
  130.             infile = substr(infile, j + 1, 10000);
  131.             w = atoi(tmp);
  132.  
  133.             j = strstr(infile, " ");
  134.             tmp = substr(infile, 0, j);
  135.             infile = substr(infile, j + 1, 10000);
  136.             h = atoi(tmp);
  137.  
  138.             j = strstr(infile, " ");
  139.             tmp = substr(infile, 0, j);
  140.             infile = substr(infile, j + 1, 10000);
  141.             x = atoi(tmp);
  142.  
  143.             j = strstr(infile, " ");
  144.             tmp = substr(infile, 0, j);
  145.             infile = substr(infile, j + 1, 10000);
  146.             y = atoi(tmp);
  147.  
  148.             j = strstr(infile, " ");
  149.             tmp = substr(infile, 0, j);
  150.             infile = substr(infile, j + 3, 10000);
  151.             win = atoi(tmp);
  152.  
  153.             SetInfo(id, "window_width", w, "window_height", h, "window_xpos", x, "window_ypos", y, "window", win);
  154.  
  155.             for (;;)
  156.             {
  157.                 if (strlen(infile) == 0)
  158.                     break;
  159.  
  160.                 infile = substr(infile, 1, 1000);
  161.                 j = strstr(infile, "\"");
  162.                 tmp = substr(infile, 0, j);
  163.                 infile = substr(infile, j + 2, 10000);
  164.  
  165.                 if (first)
  166.                 {
  167.                     id = GetBufferID();
  168.  
  169.                     if (strlen(ReadInfo("file_name", id)) != 0 ||
  170.                          ReadInfo("changes", id) != 0)
  171.                     {
  172.                         if (!id1)
  173.                             id = New();
  174.                         else
  175.                             id = id1;
  176.                         
  177.                         if (!id)
  178.                         {
  179.                             Request("Can't create new buffer", "Error message", "OK");
  180.                             return;
  181.                         }
  182.                     }
  183.  
  184.                     first = 0;
  185.                 }
  186.                 else
  187.                 {
  188.                     if (!id1)
  189.                         id = New();
  190.                     else
  191.                         id = id1;
  192.                     
  193.                     if (!id)
  194.                     {
  195.                         Request("Can't create new buffer", "Error message", "OK");
  196.                         return;
  197.                     }
  198.                 }
  199.  
  200.                 id1 = id;
  201.                 CurrentBuffer(id);
  202.  
  203.                 if (Load(tmp) < 0)
  204.                 {
  205.                     Request("Error loading file!", "Error message", "OK");
  206.                     j = strstr(infile, ";");
  207.                     infile = substr(infile, j + 2, 10000);
  208.                 }
  209.                 else
  210.                 {
  211.                     j = strstr(infile, " ");
  212.                     tmp = substr(infile, 0, j);
  213.                     infile = substr(infile, j + 1, 10000);
  214.  
  215.                     y = atoi(tmp);
  216.  
  217.                     j = strstr(infile, " ");
  218.                     tmp = substr(infile, 0, j);
  219.                     infile = substr(infile, j + 1, 10000);
  220.  
  221.                     x = atoi(tmp);
  222.  
  223.                     GotoLine(y, x);
  224.  
  225.                     j = strstr(infile, " ");
  226.                     tmp = substr(infile, 0, j);
  227.                     infile = substr(infile, j + 1, 10000);
  228.  
  229.                     SetInfo(id, "tab_size", atoi(tmp));
  230.  
  231.                     j = strstr(infile, ";");
  232.                     infile = substr(infile, j + 2, 10000);
  233.                 
  234.                     id1 = 0;
  235.                 }
  236.             }
  237.             
  238.             if (id1 && ReadInfo("changes", id1) == 0)
  239.                 Kill(id1);
  240.         }
  241.     }
  242. }
  243.